草庐IT

Java Parallel Streams 关闭线程

全部标签

java - 如何检查扫描仪是否已关闭

我在尝试编写两种方法时遇到了一些问题。两者都涉及使用扫描仪读取文件,其中每一行都以逗号分隔。这些方法是我的FileIO类的一部分。除了那个类之外,我还有另外两个类,Food和FoodArrayList。食物对象包含来自食物捐赠的几条信息(谁捐赠了这些元素,捐赠的原因等)。FoodArrayList类几乎具有与ArrayList相同的功能,除了我创建它只是为了存储Food对象。我纠结的两种方法如下:读入文件并简单地计算文件中的行数。它返回行数。此方法用于确定FoodArrayList的大小。这是因为文件的每一行都描述了一个Food对象。读入文件并将信息存储到FoodArrayList对象

java - 套接字输入和输出的独立线程

我被指派处理多线程Java服务器的一些性能和随机崩溃问题。尽管线程和线程安全对我来说并不是真正的新主题,但我发现设计一个新的多线程应用程序的难度可能只有尝试调整一些遗留代码的一半。我浏览了一些知名书籍以寻找答案,但奇怪的是,只要我阅读它并分析提供的示例,一切似乎都很清楚。然而,当我看到我应该处理的代码时,我对任何事情都不确定了!一定是理论知识太多,实际经验太少之类的。无论如何,回到主题,当我在做一些在线研究时,我遇到了thispieceofcode.一直困扰我的问题是:在没有同步的情况下从两个单独的线程调用套接字上的getInputStream()和getOutputStream()真

java - 在客户端 JAVA 中调用 socket.close() 时套接字不关闭服务器端

我在java中遇到套接字问题。我有一个ServerSocket正在监听accept()并为每个客户端请求生成线程。客户端和服务器之间的通信工作正常。我正在使用输入流从服务器线程中的客户端读取数据,例如:inputStream=mySocket.getInputStream();bytes=inputStream.read(buffer);我的问题是,如果我从客户端调用socket.close(),bytes=inputStream.read(buffer);的阻塞调用没有任何反应,它会继续阻塞。但是,如果我关闭来自服务器的套接字,它会起作用,然后客户端的inputStream.read

java - 从Java中的Runnable线程调用主线程

我已经实现了一个Runnable接口(interface)来加载图像图block,我想从这个辅助线程调用主线程来显示图block。谁能告诉我如何从Java中的可运行接口(interface)线程调用主线程。谢谢。 最佳答案 而不是Runnable你可以使用Callable>它返回一组加载的图像。将这个可调用任务提交给执行者,得到Future>并等待加载线程完成其工作。例如:Future>future=Executors.newSingleThreadExecutor().submit(newCallable>(){@Override

java - 测试多线程代码或确保代码是线程安全的指南

是否有任何测试多线程代码的指南(除了在问题上抛出一堆线程并祈祷)。我基本上是在寻找测试数据损坏、死锁和其他并发问题的好方法。本质上,我希望能够通过测试证明代码是线程安全的。Java中是否有任何框架可以让您轻松地为多线程场景编写测试? 最佳答案 我已经编写了很多多线程代码,但从未发现任何可以轻松测试我没有预测到的并发正确性问题的东西。大多数时候,我必须考虑它可能会崩溃的场景,然后我如何在这种情况的极端版本​​中证明它的正确性(通常使用CountDownLatches或类似工具以我认为它可能崩溃的方式弯曲它。绝对使用FindBugs和类

java - 如何在不关闭连接的情况下更改波特率?

我想连接到一个初始波特率为300的串口(COM4)设备,该设备可以通过命令将其波特率更改为9600,我的Java代码将此命令发送到设备和波特率设备已更改,但我不知道如何在不关闭连接的情况下更改程序中的波特率。当连接关闭时,设备恢复到初始波特率。有什么方法可以在连接打开时更改Java中的波特率?在我向设备发送“更改波特率”命令后,当执行以下代码时设备失去了连接。我认为这种方法只是为了初始化,而不是在通信中改变波特率。port.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PA

java - 固定线程池中的线程阻塞

我有两个疑惑:关于Java中的固定线程池。假设我创建了一个有5个线程的固定线程池,并且所有线程当前都在执行,还假设队列中有4个任务在等待完成这些线程的执行。如果所有当前正在执行的任务都被阻塞,会发生什么?是否有办法从该队列中取出任务并将阻塞的任务放入队列中?我们如何知道任务是被阻止还是正在执行? 最佳答案 Ifallcurrentlyexecutingtasksgotblockedwhatwillhappen?Whetherthereisawaytotaketaskfromthatqueueandputtheblockedtaski

java:中断线程是绝对必要的

我是Java的新手,正在使用某人提供的代码。在那里,在代码的末尾,如果线程尚未完成,它们将中断该线程。我正在测量代码的时间。问题是Java代码首先发出所有线程,然后在最后中断。有必要打断吗?我们不能等到所有线程真正完成吗?或者可能只是跳过中断(这些线程正在使用processexec命令运行进程,它们无论如何都会完成)。这是相关代码。首先是单个线程的代码:StringcommandString="./script.scr";process=Runtime.getRuntime().exec(commandString);BufferedReaderbufferedReader=newBu

java - JMS 队列上多线程消息处理的最佳实践

我目前正在将JMS支持添加到类似应用程序服务器的框架中。JMS将由HornetQ(独立代理,服务器类路径上的hornetqjar)实现,但既没有JBoss,也没有spring,也没有其他任何可以提供MDB的东西。下一步是将消息监听器添加到xa队列,以允许并行处理传入消息。有些消息会启动长时间运行的任务,因此基本思想是从onMessage方法生成工作线程。在漫长的互联网旅程中,我遇到了thisdiscussion,其中一位参与者提到,他不会这样做,而是使用一个额外的内部队列来完成任务:然后(单线程)消息监听器将简单地从入站队列中获取消息并为内部队列创建新消息,其中在该内部队列的另一端,一

java - OS X Java 每个进程的最大线程数

运行这段代码for(inti=0;i结果Exceptioninthread"main"java.lang.OutOfMemoryError:unabletocreatenewnativethreadatjava.lang.Thread.start0(NativeMethod)atjava.lang.Thread.start(Thread.java:658)atcom.codeoverdrive.burnbearburn.Main.main(Main.java:10)2024个运行线程之后。使用JVM堆和堆栈大小没有帮助。sysctlkern.num_threads返回kern.num_